Method and Device for the Accelerated Execution of Applications

ABSTRACT

An aim of the invention is to enable the acceleration of the execution, in particular the starting of an application. The invention relates to a method for executing an application which is performed by at least one device. The method involves providing data parts from a data memory, which are required for the execution of the application. The data parts are stored in the data memory in an order which is at least in some areas based on an expected required order.

CROSS-REFERENCE TO RELATED PATENT APPLICATIONS

This patent application is a continuation of PCT/EP2016/076111, filedOct. 28, 2016, which claims priority to German Application No. 10 2015118 522.9, filed Oct. 29, 2015, the entire teachings and disclosure ofwhich are incorporated herein by reference thereto.

FIELD OF THE INVENTION

The present invention relates, according to a first aspect, to a methodfor the execution of an application. According to a second aspect, theinvention relates to a method for sending data parts. According to athird aspect, the invention relates to the storage of data parts.According to further aspects, the invention further relates to devicesand computer programs.

BACKGROUND TO THE INVENTION

Generic methods of the abovementioned kind, in particular methods forthe execution of an application, are known from the prior art.

During the startup process of an application, a number of seconds orminutes or, if the application has to be downloaded first from a servervia a network such as the Internet, even a number of hours, may elapsebefore the application is finally ready for interactive use by a user.Generally, however, the user will want to use the selected applicationas soon as possible, meaning that the startup process should be as shortas possible.

Furthermore, in recent times an increasingly frequent need has arisen totransfer executable applications, since these are no longer distributedon a data medium, but are distributed via a network, by way of examplethe Internet. A number of approaches have been taken to ensure that inthis case also a short time until starting the application is achieved.

One example is what is known as video streaming, where the applicationis executed on a server and only an audio and video stream istransferred to a client, on which the application is intended to beused.

The disadvantage with this, however, is that the latency can in certaincircumstances be too high to allow satisfactory and in particular fluiduse of the application on the client remote from the server. By way ofexample, the bandwidth may not be sufficient, or latencies may occur ofup to a few hundred milliseconds, in particular with transfers via theInternet. In addition, continuous transfer of data in the form of anaudio and/or video stream is necessary, meaning that the client must becontinuously online.

To address these disadvantages, what is known as application streamingis used, whereby an application is provided to a client on demand by aserver. However, the application is not executed as with video streamingon the server with then only audio and/or video data being transferredto the client, rather the application itself is transferred and executedlocally by the client. Because the application is executed locally onthe client, the performance of the server does not have to be designedfor executing the application. In addition, high latencies do notpresent a problem or are even irrelevant.

If, therefore, the application first has to be downloaded from a remoteserver via a network, such as the Internet, it may actually take manyhours until the application can finally be interactively used by a user.

In order to address this particular disadvantage, it is known from theprior art, by way of example, to shorten the time required fordownloading and installation of the application, so that ultimately thetime until starting the application is shortened. To this end, forinstance, blocks of a software title can be downloaded until anexecutable threshold is reached. The software title can then be executedand the downloading of further blocks of the software title can becontinued, while the software title is being executed.

In this way the time before and until starting an application can beshortened, in particular if the application has to be downloaded from aremote server. However, following the (partial) downloading, theapplication is then stored as normal in a local memory of the user, byway of example their hard disc. In this regard, in the best-casescenario the actual startup process of the application would only be asfast as for a locally-installed application. This means that in thiscase also, even though the required data are already locally available,application startup still takes seconds or minutes until the user isable to interactively use the application.

However, as stated above, there is an interest not only in shorteningthe time until the application startup, but also for execution itselfand in particular accelerating the actual startup itself. In the case ofcomputer games, upon startup of the computer game users or gamers are,by way of example, often diverted through video sequences, until thecomputer game can finally be played. In this regard, a shortening of theapplication startup itself is also desirable. This applies equally toother applications. It also applies to both applications which are madeavailable to the user though application streaming, and to applicationswhich are already available to the user locally.

BRIEF DESCRIPTION OF A NUMBER OF EXEMPLARY EMBODIMENTS OF THE PRESENTINVENTION

An aim of the invention is therefore to indicate a generic method,devices and computer programs, with the intention of enabling theaccelerated execution, in particular startup, of the application.

According to a first aspect, the invention relates to a method forexecuting an application which is performed by at least one device, saidmethod comprising:

-   -   providing data parts from a data memory, which are required for        the execution of the application, the data parts being stored in        the data memory in an order which is at least in some areas        based on an expected required order

The invention takes advantage of the fact that when data parts areprovided from a data memory, the data parts are stored in the datamemory in a particular order, namely in an order which is at least insome areas based on an expected required order. This means that requireddata parts of the application can be regularly available more quicklythan normal and in particular the application startupprocess—irrespective of whether the program is already locally installedor first has to be downloaded from a remote server—can be dramaticallyaccelerated. Thus, in particular, a method for accelerated execution ofan application is provided.

Here the data memory can, by way of example, be provided by a hard disc,a Solid State Disk (SSD), a working memory (RAM) or an external drive,to name just a few examples.

However, if an application is stored in a conventional manner in a datamemory (for example on a hard disc), the order of the individual dataparts in the data memory is, by way of example, dependent upon the fileaffiliation or the folder structure. Furthermore, the data parts areoften present in a fragmented form, which slows down the execution ofthe application more. The fragmentation can above all be attributed tothe actual file system used. Most file systems are developed so that anoptimum overall performance can be achieved, leading to data partsbelonging to an application becoming fragmented over time in the datamemory. While modern file systems are able to minimize this effectduring ongoing operation, the order of the data parts of individualfiles is nevertheless broken up as before. Irrespective of the variousphysical access mechanisms of available data memories, that is to saywhether it is a case of, by way of example, a hard disc with rotatingspindles, a Solid State Disk (SSD) or a working memory (RAM), the directaccess (also referred to as random access or access by means of targetedjumps, known as seek operations) is just as slow.

Because now the data parts are stored in the data memory in an orderwhich is at least in some areas based on an expected required order, theinvention allows the data parts to be made available in a similar way toa continuous stream during a streaming process. If the data memory is,by way of example, a hard disc with a rotating spindle, generally alldata parts located on the same track as a requested data part are read,since these pass the write-read head any way. So, no additional delayresults from the reading of further data parts on the same track. Shouldthese subsequently be requested, they are immediately available. In thisregard, a preloading of the data parts is achieved (“data prefetching”).If the data memory is, by way of example, a data memory on a solid statebasis(by way of example SSD, RAM), generally an entire memory page isread in one step instead of just the requested data part. Thus, a cachealso contains the adjacently-stored data parts. If a short time laterthe next data part required is requested, this is already available inthe cache. In this case, also, prefetching of the data parts isachieved. Finally, this method can also be advantageous in communicationvia a network, since for large distances (with many hops) the round-tripdelay time can be a few hundred milliseconds and the requesting ofindividual data parts may take some time.

An application can in particular be a computer program, which is used toprocess, support or provide a useful or desired, non-system-orientedfunctionality. It is basically conceivable for the application to beused for image processing, video processing, text processing,spreadsheets and/certain operational functions such as financialaccounting, customer administration, etc. The application is at least inpart executed in the user space. Particularly preferably, theapplication is or comprises a computer game or part of this. The methodcan also comprise the step of executing the application.

To further increase performance, the method is preferably (at least inpart) executed in the kernel space.

To execute the application, the application can, by way of example,comprise one or more executable files. Here, by way of example, a binaryfile in machine code or a bytecode file may be involved, which can beexecuted directly or by a runtime system, or a text file, which can beinterpreted by an operating system shell. The data parts can, inparticular, be data parts of the executable file.

The data parts required for executing the application can in particularbe understood to be mandatory and/or optionally required data parts.

The fact that the order in which the data parts are stored in the datamemory, is based on an expected required order, means in particular thatthe (physical) order in which the data parts are stored in the datamemory, has been determined from the required (chronological) order. Byway of example, the order, in which the data parts are stored in thedata memory is the expected required order. The fact that this takesplace at least in some areas means, in particular, that in the datamemory data parts required for executing the application can to someextent also be stored conventionally, that is to say independently ofthe expected required order.

Here, an expected required order in particular means that it can beexpected that the application will require data parts in the order. Inother words, the data parts are in particular physically stored in anorder, which reflects the chronological need for the data parts for theapplication. The expected required order can in particular be determinedempirically. In particular, the expected required order can bedetermined as described in more detail in relation to the third aspectof the invention.

Not necessarily all the data parts required for execution of theapplication have to be stored as described. By way of example, just someof the data parts required for execution of the application can also bestored in order at least in some areas based on an expected requiredorder.

The method according to the first aspect can in particular be executedby at least one first device, described in more detail in connectionwith other aspects.

According to an embodiment of the method of the first aspect, the methodfurther comprises:

-   -   requesting the data parts required for executing the        application.

The requesting can by way of example be performed by the application, byan operating system and/or a file system. By way of example, theapplication requires a data part for the execution and passes this on tothe file system. The requesting can, by way of example, take place inthat a (relative and/or absolute) addressing is handed over whichunambiguously identifies the data part in the data memory. Theaddressing can, by way of example, designate a position of the data partin the data memory (by way of example in the form of a memory address ora memory offset value). By way of example, the addressing can designatean area of the data memory comprising a plurality of data parts. Basedon the addressing, then (at least) the required data part is read andprovided, by way of example returned to the application, the file systemand/or the operating system. As stated above, generally it is not onlythe requested data part that is read but also other physically adjacentdata parts. In the optimum case, the required data part no longer evenhas to be read from the data memory, but due to the prefetching ofanother data part has already been read from the data memory and is thusavailable, by way of example, in a faster cache. Thus, the data part canbe provided in response to a request significantly faster with themethod described.

According to an embodiment of the method of the first aspect, the methodfurther comprises:

-   -   mapping an addressing used for the requesting of the data parts        required for execution of the application to the order of the        data parts stored in the data memory.

By mapping the addressing used for the requesting, the addressing (byway of example, at the file system level) can take place as normal. Thismeans that the required data parts can be requested by means of theoriginal addressing, as it would, for instance, for a conventionalinstallation of the application. In particular, the addressing used forthe requesting can be a first addressing, which is mapped to a secondaddressing. By way of example, a requested memory address or a firstmemory address area can be mapped to a second memory address or a secondmemory address area. By way of example, a first block number or a firstblock number range (or a plurality of ranges) can be mapped to a secondblock number or a second block number range (or a plurality of ranges).The mapping is preferably unambiguous, in particular one-to-one.

According to an embodiment of the method of the first aspect, themapping of the addressing used takes place below the file system layer.

Generally, the file system represents a particular layer of theoperating system. The layers above (such as further layers of theoperating system or applications) can access files. The file systemgenerally converts these abstract data into an addressing (by way ofexample, a block number, track, sector, or similar). In the layer below,the file system driver can to this end, by way of example, communicatewith a relevant device driver.

Because the mapping of the addressing used now takes place below thelayer of the file system, the mapping can be performed extremelyefficiently. If the required data parts, by way of example, arerequested from the file system layer (or a layer above this), the filesystem can address the data parts as normal, so that adaptations to thefile system or above can be dispensed with. By way of example, themapping takes place by a device driver. So, the mapping preferably takesplace in a layer associated with device drivers.

The provision of the data parts necessary for execution of theapplication can thus also in particular take place from a layerassociated with device drivers.

According to an embodiment of the method of the first aspect, the methodfurther comprises:

-   -   receiving the data parts required for executing the application.

It is possible for the data parts required for execution of theapplication to not yet be stored in the data memory, or at least only inpart, during execution of the application. Then the remaining data partscan be completely or partially received. The data parts can, by way ofexample be received by another local or remote data memory. By way ofexample, the data parts are received via a network, by way of examplevia the Internet. The data parts are preferably received from a remoteserver via the Internet.

If, by way of example, it is determined that required data partsrequested are not stored in the data memory, these data parts can berequested (by way of example from the remote server), in order toreceive them. However, an individual request for required data parts notyet stored in the data memory is preferably unnecessary, since the dataparts are preferably continuously received. This means that the dataparts are received little by little similar to a stream, withoutindividual data parts having to be requested. This accelerates theexecution of the application further. If, by way of example, on theother hand it is determined that required data parts are already storedin the data memory or are currently not needed, the continuous receptiondescribed can also (at least in part) be skipped for the already storedand (currently) not needed data parts. These data parts can then, by wayof example, be received at a later point in time.

The data parts can preferably (at least partly) be received in the orderat least in some areas based on the expected required order. In thisway, the data parts expected to be required first are also the first tobe received. This is, in particular, advantageous, if the required dataparts (in particular the data parts necessary for starting theapplication) first have to be received from a remote server.

The data parts required for execution of the application can inparticular be received by at least a second device, as described in moredetail in relation to further aspects.

According to an embodiment of the method of the first aspect, the methodfurther comprises:

-   -   storing the data parts in a data memory in the order which is at        least in some areas based on an expected required order.

If the required data parts are not yet stored in the data memory, by wayof example because these have to be received first, these are preferablystored following receipt in the data memory. Because the storage in theorder at least in some areas is based on the expected required order, asalready explained, an accelerated execution of the application isachieved.

According to an embodiment of the method of the first aspect, the dataparts are data blocks and/or sequences of data blocks and the order is ablock order.

It has been shown that an acceleration of the execution of theapplication can be achieved particularly effectively, if data blocks arestored in the data memory in a block order which is at least in someareas based on an expected required block order. The block order can, byway of example, specify the order of individual data blocks or sequencesof data blocks.

A data block is considered in particular as a limited, set number ofbytes. A data block can be considered to be an individual transport unitor as the smallest readable or writable unit in an access. The structureof a data block and the elements of a data block can depend on therespective data memory, file system or other factors.

A data block can, by way of example, have a size of 512 bytes to 4,096bytes. Essentially, however, smaller and in particular larger datablocks are conceivable. In general, each data block can be unambiguouslyaddressed in the data memory. This can take place using various methods.By way of example, an addressing of the data blocks via continuouslynumbered blocks (LBA) can take place. Similarly (in the case of harddiscs with spindles) it is conceivable to address blocks via cylinder,head and sector number (CHS). Other data block addressing methods arealso conceivable.

Also, particularly advantageous to an implementation of the methodaccording to the first aspect on the basis of data blocks and a blockorder is the fact that in this way a high level of compatibility withpractically all operating systems is achieved. The actual functionalitycan be implemented in practice irrespective of the platform. All thathas to be achieved is, by way of example, an adaptation of thecorresponding device driver to the method of working of thecorresponding (virtual) block device in the respective operating system.

According to an embodiment of the method of the first aspect, the dataparts are stored on a block device, in particular a virtual blockdevice.

Through the use of a (virtual) block device, a data memory can be madeavailable and the desired order of the data parts in the form of datablocks achieved. A (virtual) block device or block-oriented device isunderstood to be a (virtual) device, which stores or transfers data indata blocks. A block device can in particular use the operating system'sown buffer. A block device can in particular be a hard disc, an SSD, aUSB-stick or similar. A virtual block device in practice pretends to theoperating system, that a block device is present and is communicating orcan communicate with the operating system. In particular, a virtualblock device is advantageous, since this can be made available in eachsystem on a software basis, in particular through a device driver. Thephysical data memory can in this case by way of example be provided by apart of the data memory of a local hard disc.

The device driver can advantageously be associated with its own cache,in particular in the kernel space, or have this made available to it.This further accelerates the provision of data blocks. In this regard,the method of the first aspect preferably further comprises:

mounting the block device in an existing file system. In this way, thedata stored on the block device or in the file system present thereincan be made available to an operating system. With a virtual blockdevice, the data are, by way of example, stored in an image.

According to an embodiment of the method of the first aspect, for theproviding the data parts required for execution of the application fromthe data memory a device driver, preferably a block device driver, isused. The device driver is preferably a device driver for a virtualblock device.

A device driver is in particular understood to be a computer program orsoftware module, which controls the interaction with (virtual) devices.To this end, the driver can on the one hand, by way of example,communicate directly with the (virtual) device and exchange data withthe (virtual) device. On the other hand, the device driver can, by wayof example, offer the operating system and/or the application software(thus, in particular layers positioned above the layer associated withthe device driver) a standardised interface, so that the (virtual)device can be addressed in the same way as similar devices.

In this regard, the method of the first aspect preferably furthercomprises: installing a device driver for providing the data partsrequired for execution of the application from the data memory. By wayof example, the installation is initiated by a user. Then, the (virtual)device can be mounted in an existing file system. By means of the(virtual) device the data memory can ultimately be accessed, and theapplication executed.

According to an embodiment of the method of the first aspect, the methodfurther comprises:

-   -   suspending a processing of an event queue, in particular if the        required data parts are not available in the data memory; and    -   resumption of the processing of the event queue.

An event queue can in particular comprise operations (in particularwrite and/or read operations), intended to be applied to the datamemory.

By way of example, in the event that the requested required data partsare not (yet) stored in the data memory and are thus not available, itcan be advantageous to suspend the processing of an event queue, toavoid malfunctioning of the application. It is particularly advantageousif the event queue is the event queue of a device driver or (virtual)device as described previously. Then the suspension can, by way ofexample, be performed by the device driver. However, it is alsobasically possible to suspend the event queue of a device driver by anexternal command (of the operating system or of a program). It can beadvantageous in so doing to take advantage of the fact that layers abovethe layer associated with the device driver, such as the file system,are waiting for the device driver. So, if data parts are not available,the situation is in practice as if there were a slow reading of the(virtual) device causing a delay.

By way of example, the processing of the event queue is suspended for apredetermined time. By way of example, the time for which the processingof the event queue is suspended is determined (by way of examplecalculated or estimated). If the data parts by way of example arereceived via a network, by way of example using the transmission rate itcan be estimated when the required data parts will (are expected to) bereceived and can be stored in the data memory and thus be available.

It can then be checked if the data parts are available. If the dataparts are available, the processing of the event queue can be resumed.Otherwise, a further suspension of the processing of the event queue cantake place.

According to an embodiment of the method of the first aspect, the dataparts at least with respect to data parts relevant for the applicationstart are stored in the data memory in an order which is at least insome areas based on an expected required order.

Data parts relevant for the application start are understood to be dataparts, which are relevant for starting the application. By way ofexample, data parts relevant for the application start are those dataparts that are required to execute the application to the extent thatthe application can be used interactively by the user. By way ofexample, the data parts relevant for the application start account forless than 10% and/or less than 50 megabytes of the total application.This, in particular, allows the starting to be accelerated whenexecuting the application.

However, independently of this, it is obviously also possible to storedata parts, which are not directly required for starting the application(but only later), in an order which is at least in some areas based onan expected required order.

It is, by way of example, also conceivable that a first quantity of dataparts of the application is provided for, in which the data parts arestored based on the expected required order, and a second quantity ofdata parts of the application is provided, in which the data parts arenot based on, but are independent of, the expected required order. Thefirst quantity can then, by way of example, comprise application-relateddata parts, so that a rapid execution is enabled, whereas the order ofthe data parts in the second quantity does not need to be optimised.

According to an embodiment of the method of the first aspect, the methodfurther comprises:

-   -   using metadata information associated with the application to        execute the application.

Metadata information is in particular understood to beapplication-specific information which (at least partly) is required forexecuting the application. By way of example, the metadata informationcomprises changes which are made during the installation and/orexecution of the application to the system executing the application(for instance, the operating system and/or file system). By way ofexample, the metadata information comprises path information, fileinformation, directory information, information on environment variablesand/or information on databases (for instance, registration databases)or modifications to these (for instance, new entries). The metadatainformation may also comprise further dependencies.

Similarly, the metadata information can comprise mapping information,allowing the mapping of the addressing used for requesting the dataparts required for execution of the application to the order of the dataparts stored in the data memory. However, the mapping information canalso be transferred independently of the metadata information.

According to a second aspect, the invention also relates to a method forsending data parts, in particular for use in a method according to thefirst aspect, carried out by at least one device, the method comprising:

-   -   sending of data parts required for an execution of an        application, wherein the data parts are stored in a data memory        in an order which is at least in some areas based on an expected        required order.

As already stated in connection with the first aspect, because the dataparts are stored in a data memory in an order which is at least in someareas based on an expected required order, it is possible for therequired data parts application to be generally available to theapplication more quickly than normal and in particular for theapplication startup process to be dramatically accelerated.

The method according to the second aspect can in particular be executedby at least one second device, described in more detail in connectionwith further aspects.

The data parts can, by way of example, be sent to a first device, whichcarries out a method according to the first aspect. By way of example,the data parts are stored in at least one file, by way of example animage. This means that only the image has to be sent. If the sent dataparts are received and stored, these are advantageously automaticallystored at the receiver in a data memory directly in an order which is atleast in some areas based on an expected required order.

The way in which such an order can be determined is described by way ofexample in connection with the third aspect of the invention.

According to an embodiment of the method of the second aspect, the dataparts are sent at least partly in the stored order.

Because the data parts are sent at least partly in the stored order, thedata parts expected to be required first are the first to be sent andcan be received first. Thus, in particular in a situation in which therequired data parts (in particular the data parts required for startingthe application) still have to be received (for instance by the firstdevice), the time until starting the application is also shortened.

According to an embodiment of the method of the second aspect, themethod further comprises:

-   -   receiving a request to send at least some of the data parts        required for execution of the application.

If, by way of example, it is determined by the first device thatrequired data parts are not stored in the data memory there, these dataparts can be requested, in order for them to be received. The request tosend the data parts can then be received in the course of the method ofthe second aspect, by way of example by a second device.

It is conceivable, that with the send request individual data parts orranges of data parts are requested. However, individual requesting ofrequired data parts is preferably unnecessary since the data parts arepreferably sent continuously. This means that the data parts are sentlittle by little similar to a stream, without a request for individualdata parts having to be received. This accelerates reception and thusthe execution of the application further.

According to an embodiment of the method of the second aspect the methodfurther comprises:

-   -   sending of metadata information associated with the application        for execution of the application.

As already explained in connection with the first aspect, the metadatainformation comprises, by way of example, path information, fileinformation, directory information, information on environment variablesand/or information on databases (for instance, registration databases)or modifications to these (for instance, new entries). The metadatainformation can, by way of example, similarly be contained in the atleast one file. Similarly, at least one separate file can be provided,in which the metadata information is contained. The metadata informationcan also be held in the memory. The metadata information is preferablysent first. By way of example, the metadata information can be sent inthe course of a push process or in the course of a pull process.

Similarly, the metadata information can comprise mapping information,allowing the mapping of the addressing used for requesting the dataparts required for executing the application to the order of the dataparts stored in the data memory. However, the mapping information canalso be transferred independently of the metadata information.

In relation to further embodiments, in particular with regard to theembodiment of the data parts as data blocks, reference is made to thestatements in connection with the first aspect.

According to a third aspect, the invention also relates to a method forstoring required data parts, carried out by at least one device, saidmethod comprising:

-   -   receiving an acquired required order of the data parts required        for executing an application;    -   determining an expected required order at least based on the        acquired required order; and    -   storing the required data parts in a data memory in an order        which is at least in some areas based on the expected required        order.

The method allows the required data parts to be stored in a data memoryin an order which is at least in some areas based on an expectedrequired order.

At least based on the acquired required order, an expected requiredorder can be determined. By way of example, the acquired required ordercorresponds to the expected required order. By way of example, theacquired required order is just one of a plurality of factors (by way ofexample, further acquired required orders), in determining the expectedrequired order.

Finally, the required data parts can be stored in a data memory in anorder which is at least in some areas based on an expected requiredorder. As a consequence, the data parts are thus rearranged, compared tothe original stored order, as exists by way of example following anormal installation of the application in a data memory. Thus, anoptimised application is available. As already explained in connectionwith the first aspect, this allows execution of the application to nowbe accelerated, by way of example according to the method of the firstaspect.

In addition, mapping information can be stored, allowing a mappingbetween the originally stored order, as exists, by way of examplefollowing a normal installation of the application in a data memory, andthe rearranged order. In other words, the mapping information allows amapping of the addressing used for requesting the data parts requiredfor execution of the application to the order of the data partsrearranged in the data memory.

The method does not necessarily have to be performed for all data partsrequired by the application, it can, by way of example, also beperformed for just some of the required data parts.

The method can in particular be carried out by at least a third device,as described in more detail in relation to further aspects.

According to an embodiment of the method of the third aspect, the methodfurther comprises one or more of the following steps:

-   -   installing a device driver, preferably a block device driver;    -   generating an image;    -   mounting a device via a device driver, in particular via the        installed device driver;    -   installing the application, in particular on the image        generated;    -   determining metadata information associated with the application        for the execution of the application;    -   executing the application;    -   acquiring the required order of the data parts required for the        execution of an application.

One or more of the steps serves or serve in particular to prepare theacquisition of a required order of the data parts required for executionof the application. One or more (in particular all) the above steps is(are) by way of example carried out on one or more data processingsystem(s), in particular in an analysis environment. An analysisenvironment is in particular understood to be a technical/organisationalinfrastructure, used to analyse software.

Through a device driver, in particular a block device driver, theacquisition of a required order of data parts required to execute theapplication can be performed extremely efficiently. An image can also begenerated. Following installation of the device driver, a device, inparticular a block device, and thereby the image, can be mounted via thedevice driver in an existing file system. Here, the block device ispreferably a virtual block device. The device and thus the image can beaccessed via the device driver. Then the application can be installed onthe device and thus on the image.

In addition, metadata information associated with the application cannow be determined for execution of the application. This can, by way ofexample, take place by a comparison of the system (for instance of theoperating system and/or file system) before installation and afterinstallation of the application. Similarly, the performance of actualsystem changes (by way of example by acquisition of write and/or readprocesses) can be acquired. This simplifies the execution of theapplication on other devices (by way of example the first device). Theserequire just an image of the already installed application and themetadata information to be made available, with a re-installation beingunnecessary. As already explained in connection with the first andsecond aspect, the metadata information comprise, by way of example,path information, file information, directory information, informationon environment variables and/or information on databases (for instance,registration databases) or modifications to these (for instance, newentries).

Next, the application can be executed. This application corresponds tothe application to be executed according to the method of the firstaspect. In this regard, reference is made to the statements inconnection with the first aspect. However, here the data parts requiredby the application are initially (at least partly) not yet stored in anorder which is at least in some areas based on an expected requiredorder.

In the course of the execution of the application, the application willrequire data parts for its execution in a certain (chronological) order.To this end, by way of example the application, the operating systemand/or the file system can request the required data parts. This ordercan be acquired, wherein this can advantageously take place below thelevel of the file system. By way of example, the acquisition takes placeby a device driver. As already explained in connection with the firstaspect, the data parts are preferably data blocks and the order is ablock order. On this point reference is made to the statement inconnection with the first aspect.

According to an embodiment of the method of the third aspect, theacquired required order of the data parts required for execution of theapplication comprises logged information on read operations on therequired data parts during execution of the application.

In this way, the acquisition of the order of the data parts required forexecution of the application can be performed extremely efficiently.Logging of information is particularly advantageously performed by thedevice driver. By way of example, write and/or read operations definedin the device driver are extended, so that these in any case allowlogging of information on read operations on the required data partsduring execution of the application. Logging of information on readoperations on the required data parts can, by way of example, be carriedout in that a (relative or absolute) addressing is logged. By way ofexample, a log-file is generated, containing the logged information.

According to an embodiment of the method of the third aspect, the loggedinformation allows an unambiguous identification of the respectiverequired data part.

An unambiguous identification can, by way of example, be achieved bylogging an unambiguous (relative and/or absolute) addressing. Theaddressing can, by way of example, comprise an unambiguous position ofthe data part in the data memory (by way of example in the form of anunambiguous memory address or an unambiguous memory offset value). Byway of example, the addressing can designate an unambiguous area of thedata memory comprising a plurality of data parts. If the data parts, byway of example, are data blocks, by way of example an unambiguous blocknumber or an unambiguous block number range can be logged.

According to an embodiment of the method of the third aspect, the loggedinformation also comprises one or more of the following information:

-   -   time information;    -   application-specific events;    -   user-specific information.

The time information can, by way of example, comprise relative and/orabsolute time information on the point in time when a data part or arange of data parts was needed, that is to say in particular when a readaccess to the corresponding data part or range took place.

Application-specific events can, by way of example, be the commencementof the startup of the application, the commencement of an interactivepart of the application, and/or the commencement of a certainapplication section (in a game, by way of example, commencement of levelone, level two, level three, and so on).

User-specific information can, by way of example, be user inputinformation. Input information is in particular information on inputsentered by means of input devices (for example with the keyboard or withthe mouse), by way of example which keys were pressed.

The determination of the expected required order can then advantageouslybe carried out based on one or more of these items of information. Byway of example, certain user-specific information, such as inputinformation, can influence the expected required order. This can then,by way of example, be taken into account upon receiving the data partsrequired for execution of the application.

According to an embodiment of the method of the third aspect, multipleacquired required orders of the data parts required for execution of anapplication are received, and the expected required order is determinedat least based on the multiple acquired required orders.

By way of example, the acquisition is performed at least twice, butpreferably a number of times. If the expected required order is thendetermined at least based on the multiple acquired required orders, theexpected required order can be determined more reliably. This is inparticular advantageous with interactive applications, in which theprogram flow of the application can be influenced by the user, since inthis way the order of the required data parts is also influenced. By wayof example, to this end the respective acquired required orders areconsolidated, to form a consolidated or combined order, on the basis ofwhich the expected required order can be determined.

The multiple acquisition can, by way of example, be carried out onvarious devices, by way of example on a series of analysis devices. Onthe other hand, the determination of the expected required order and thesaving of the required data parts can preferably be carried out on acentral device.

According to an embodiment of the method of the third aspect, in theevent of a sequential section of an acquired required order thesequential section is condensed.

This allows receipt of sequential sections of required orders, as far aspossible, as one sequence, to be achieved, in particular also if theacquisition is performed multiple times and the acquired required ordersare condensed. If, therefore, by way of example, in one instance thesequential section (2, 3, 4, 5 . . . n-1, n) of required data parts isacquired, the sequential section can be condensed as (2 . . . n) andlogged as such. The sequential sections do not necessarily have to becondensed, though. By way of example, only sequential sections of acertain length or a maximum number of sequential sections are condensed.

According to the third aspect, stored required data parts can then byway of example be sent according to the method of the second aspect. Ina method of the first aspect, the startup of the application canultimately be accelerated.

According to a further aspect, the invention also relates to a device,which is configured as, or comprises, suitable means for carrying outand/or controlling the method according to the first aspect (firstdevice). The first device can in particular be a data processing systemof an end user, by way of example a client.

According to a further aspect the invention also relates a computerprogram, comprising program instructions, allowing a processor to carryout and/or control a method according to the first aspect (or partsthereof) if the computer program runs on the processor (first computerprogram).

According to a further aspect, the abovementioned aim is also achievedby a device which is configured or comprises suitable means for carryingout and/or controlling the method according to the second aspect (seconddevice). The second device can in particular be a server, that makesdata available to end users.

According to a further aspect the invention also relates to a computerprogram, comprising program instructions, allowing a processor to carryout and/or control a method according to the second aspect (or partsthereof) if the computer program is running on the processor (secondcomputer program).

According to a further aspect, the abovementioned aim is also achievedby a device, which is configured as, or comprises suitable means forcarrying out and/or controlling a method according to the third aspect(third device). The third device can in particular comprise a pluralityof data processing systems, by way of example the third device comprisesa plurality of analysis data processing systems and a central server.

According to a further aspect, the invention also relates to a computerprogram, comprising program instructions, allowing a processor to carryout and/or control a method according to the third aspect (or partsthereof) if the computer program is running on the processor (thirdcomputer program).

The respective device preferably comprises at least one processor and atleast at least one memory with computer program code, wherein the atleast one memory and the computer program code are configured to carryout and/or control at least one processor, with at least one methodaccording to the first, second and/or third aspect.

For example, the first, the second and the third device are dataprocessing systems that are different from one another, configured on asoftware and/or hardware basis, to be able to carry out the respectivestep (or some of these) of the respective method according to theinvention. Configured on a software and/or hardware basis is intended tomean, for example, the preparation of the respective data processingsystem, which is necessary to be able to carry out the steps (or partthereof) of a respective method, by way of example in the form of acomputer program. Examples of a data processing system are a computer, adesktop computer, a portable computer such as a laptop computer, atablet computer, a personal digital assistant, a Smartphone and/or athin client.

However, it is also basically conceivable that, by way of example stepsof individual aspects, by way of example of the second and third aspect,are carried out on a shared data processing system. It is similarlyconceivable, that steps of an aspect are carried out on different dataprocessing systems.

For example, the first, the second and/or the third device each containmeans for executing one of the computer programs according to theinvention, such as a processor. A processor is intended, for example, tobe understood to be a control unit, a microprocessor, a microcontrolunit such as a microcontroller, a Digital Signal Processor (DSP), anApplication Specific Integrated Circuit (ASIC) or a Field ProgrammableGate Array (FPGA).

For example, the first, the second and/or the third device also in eachcase comprise means for storing information such as a program memoryand/or a main memory.

For example, the first, the second and/or the third device also in eachcase comprise means for receiving and/or sending information via anetwork such as a network interface. For example, the first, the secondand/or the third device are connected and/or connectable together viaone or more networks.

The computer programs are, by way of example, distributable via anetwork. A computer program can at least partly be software and/orfirmware of a processor.

The first, the second and/or the third computer program can, by way ofexample, comprise an application program. The first and/or secondcomputer program comprises in particular a device driver.

The computer programs according to the invention can in each case bestored in a machine-readable storage medium, containing one or morecomputer programs according to the invention and, for example, isconfigured as a magnetic, electric, electromagnetic, optical and/orother type of storage medium. Such a machine-readable storage medium ispreferably physical (thus, tangible), for example being configured as adata medium device. Such a data medium device is, by way of example,portable or permanently installed in a device. Examples of such a datamedium device are a volatile or non-volatile memory with random access(RAM) such as, for example, NOR flash memory or with sequential accesssuch as NAND flash memory and/or memory with read (ROM) or read/writeaccess. Machine-readable is, for example, intended to mean that thestorage medium can be read (out) or written to by a computer or a dataprocessing system, by way of example by a processor.

The exemplary embodiments described in this description are alsointended to be disclosed in all combinations with one another.

Further advantageous exemplary embodiments of the invention areindicated by the following detailed description of a number of practicalexamples of the present invention, in particular in connection with thefigures.

The figures attached to the application, however, are only intended tobe used for the purpose of clarification, and not to determine the scopeof protection of the invention. The attached drawings are not to scaleand are intended only as examples reflecting the general concept of thepresent invention. In particular, features shown in the figures shouldnot in any way be considered an essential component part of theinvention.

BRIEF DESCRIPTION OF THE SEVERAL VIEWS OF THE DRAWING

The drawing shows as follows:

FIG. 1 shows a block diagram of an exemplary data processing system;

FIG. 2 shows a schematic representation of a system of various exemplarydevices for carrying out the method according to the various aspects;

FIG. 3 shows a flow diagram of an exemplary method, which can be carriedout in the context of an exemplary embodiment of a method according tothe third aspect;

FIG. 4 shows a schematic representation of various layers of anoperating system;

FIG. 5 shows a flow diagram of an exemplary embodiment of a methodaccording to the third aspect;

FIG. 6 shows a flow diagram of an exemplary embodiment of a methodaccording to the second aspect; and

FIG. 7 shows a flow diagram of an exemplary embodiment of a methodaccording to the first aspect.

DETAILED DESCRIPTION OF A NUMBER OF EXEMPLARY EMBODIMENTS OF THE PRESENTINVENTION

FIG. 1 shows a block diagram of an exemplary embodiment of a dataprocessing system 1. The data processing system 1 serves as an examplefor devices according to the various aspects, in particular the first,the second and/or the third device can be implemented according to thedata processing system 1.

The data processing system 1 can, by way of example, be a computer, adesktop computer, a portable computer such as a laptop computer, atablet computer, a personal digital assistant, a Smartphone and/or athin client. The data processing system can, by way of example, performthe function of a server or a client.

Processor 100 of the data processing system 1 is in particularconfigured as a microprocessor, a microcontrol unit such as amicrocontroller, a Digital Signal Processor (DSP), an ApplicationSpecific Integrated Circuit (ASIC) or a Field Programmable Gate Array(FPGA).

Processor 100 executes program instructions, stored in program memory120, and stores, by way of example, intermediate results or similar in amain memory 110. For example, program memory 120 is a non-volatilememory such as a flash memory, a magnetic memory, an EEPROM memory(electrically erasable programmable read-only memory) and/or an opticalmemory. Main memory 110 is, for example, a volatile or non-volatilememory, in particular a Random Access Memory (RAM) such as a static RAMmemory (SRAM), a dynamic RAM memory (DRAM), a ferroelectric RAM memory(FeRAM) and/or a magnetic RAM memory (MRAM).

Program memory 120 is preferably a local data medium with a fixedconnection to the data processing system 1. Data media with a fixedconnection to the data processing system 1 are, by way of example, harddiscs, incorporated in the data processing system 1. Alternatively, thedata medium can, by way of example, also be a data medium that isseparably connected to the data processing system 1, such as a memorystick, a removable storage device, a portable hard drive, a CD, a DVDand/or a diskette.

Program memory 120 contains the operating system of the data processingsystem 1, which when the data processing system 1 is started up isloaded at least partly into the main memory 110 and executed by theprocessor 100. In particular, when the data processing system 1 isstarted up, at least a part of the core of the operating system isloaded into the main memory 110 and executed by the processor 100. Theoperating system of data processing system 1 is, by way of example, aWindows, UNIX, in particular Linux, Android, Apple iOS and/or MACoperating system.

The operating system allows in particular the use of the data processingsystem 1 for data processing. It manages, by way of example, resourcessuch as main memory 110 and program memory 120, network interface 130,and input/output device 140, makes available, inter alia throughprogramming interfaces, other basic program functions, and controls theexecution of programs.

Processor 100 controls the network interface 130 which, by way ofexample, is and is configured as a network card, a network module and/ora modem, to create a link between the data processing system 1 and anetwork. Network interface 130 can, by way of example, receive data viathe network and pass this on to processor 100 and/or receive data fromprocessor 100 and send it via the network. Examples of a network are alocal area network (LAN) such as an Ethernet network or an IEEE 802network, a wide area network (WAN), a wireless network, a wired network,a mobile telephone network, a telephone network and/or the Internet.

Processor 100 can further control at least one input/output device 140.Input/output device 140 is by way of example a keyboard, a mouse, adisplay unit, a microphone, a touch-sensitive display device, aloudspeaker, a scanner, a disc drive and/or a camera. Input/outputdevice 140 can, by way of example, receive inputs from a user and passthese on to processor 100 and/or receive output information for the userfrom processor 100.

FIG. 2 is a schematic representation of a system 2 of various exemplarydevices for carrying out the method according to the various aspects.

Server 200, together with the computers 210, can carry out embodimentsof the method according to the third aspect, as described in more detailin connection with FIG. 3. Similarly, server 200 can carry outembodiments of the method according to the second aspect, as describedin more detail in connection with FIG. 5. Finally, the computers 250 cancarry out embodiments of the method according to the first aspect, asdescribed in more detail in connection with FIG. 6.

FIG. 3 shows, to begin with, a flow diagram 3 of an exemplary method,which can be carried out in the context of an exemplary embodiment of amethod according to the third aspect.

The method can be carried out on one or more of the computers 210. Here,the computers 210 provide an analysis environment. To begin with, ineach case a block device driver for a virtual block device is installed(step 310). Next, an image is generated on the respective computer 210(step 320). With the help of the block device driver a virtual blockdevice and thereby the image can be mounted in the file system of theoperating system of the respective computer 210 (step 330). Then anapplication to be optimised (for instance, a computer game) can beinstalled on the image generated (step 340). Here, the image isphysically stored in the respective local program memory 120 (forexample, on the hard disk) of the respective computer 210. The datablocks required for execution of the application are thus present in therespective program memory. However, these are not yet stored in anoptimised order 30.

In step 350, which can be carried out after step 340 or at least partlyalso during step 340, metadata information associated with theapplication can be determined for execution of the application. In doingso, changes to the operating system and file system installed on therespective computer 210 are acquired, which are necessary for startingthe application. These are stored, by way of example, in a file.

Then the application can be executed on the respective computer 210(step 360) and used by the respective user 220. In doing so, therequired order of data blocks required for executing an application canbe acquired (step 370).

On this point, FIG. 4 is a schematic representation of various layers ofan operating system 4, as present, by way of example, on the individualcomputers 210 or 250. Four layers 410,420,430,440 are shown. Anoperating system 4 can also have additional layers, arranged above,below or in between. In layer 420, device drivers 421, 422 (“Drive 1”,“Driver 2”) are provided. These can be a computer program or softwaremodule, controlling the interaction with the hardware of the underlyinglayer 410. On the other side, the device driver communicates with a filesystem 431, 432 of layer 430 (“file system 1”, “file system 2”). Thefile systems can, in turn, communicate with the system call routines ofthe layer 440 which, by way of example can be used by the application.Basically, various instances of a driver can also be used, by way ofexample so that various file systems only have to communicate with onedriver. By way of example, a plurality of instances can use a virtualblock device simultaneously, each containing a different application.

If the application now needs certain data blocks, these are requestedvia a file system, by way of example file system 431. This request ishandled by the block device driver, by way of example drive 421, whichcan access the application installed on the image, and the required datablocks are returned.

Here the write and/or read operations in the block device driver 421 areextended such that the requested data block is logged (for instance, bylogging a block number, a memory address and/or a memory offsetunambiguously identifying the data block). Thus, the required blockorder of the data blocks required for execution of the application arelogged by means of the block device driver 421. In addition, timeinformation in the form of a time offset is logged. Further informationsuch as application-specific events or user-specific information cansimilarly be logged.

By way of example, on one of the computers 210, the following firstrequired order is acquired, indicating the block number of the requireddata block and the associated time offset:

Block index 0 2 0 8 5 7 Time offset 0.00 0.00 0.01 0.02 1.20 1.30

By way of example, on another of the computers 210 the following secondrequired order is acquired, indicating the block number of the requireddata block and the associated time offset:

Block index 0 2 0 9 5 6 7 Time offset 0.00 0.00 0.01 0.02 0.02 1.10 1.30

Next, FIG. 5 shows a flow diagram of an exemplary embodiment of a methodaccording to the third aspect.

The multiple acquired orders can, by way of example, be made availableto the server 200 via the network 230, so that the server receives theacquired required orders of data blocks required for execution of anapplication (step 510).

On the basis of these, the server 200 can determine an expected requiredorder (step 520). To this end, multiple acquired orders can be sortedand condensed according to the time information, resulting in thefollowing order:

Block index 0 2 0 8 9 5 6 7 Time offset 0.00 0.00 0.01 0.02 0.02 0.021.10 1.30

The expected required block order (0, 2, 0, 8, 9, 5, 6, 7) can also bedetermined therefrom. Optionally, multiple data blocks contained can beignored, so that the expected required block order (0, 2, 8, 9, 5, 6, 7)results.

The expected required block order determined in this way is then used tostore the required data blocks in a data memory in an order which is atleast in some areas based on an expected required order, in particularin the expected required order itself (step 530).

By way of example, the data blocks of the original image, exhibiting theinstalled application, are rearranged. In addition, mapping informationis stored, allowing a mapping of the original image to the rearrangedimage.

Next, FIG. 6 shows a flow diagram 6 of an exemplary embodiment of amethod according to the second aspect. The method can, by way ofexample, similarly be carried out by server 200.

To begin with, the server 200 receives a request to send at least someof the data blocks required for execution of the application (step 610).The request can, by way of example, be made by one of the computers 250via a network such as the Internet 240.

If on the corresponding computer 250 no metadata information associatedwith the application for execution of the application is yet available,these can be sent first (step 620). Together with the metadatainformation, or separately from them, the stored mapping information,allowing a mapping of the original image to the rearranged image, arealso sent to the computer 250. Next, the required data blocks are sentto the corresponding computer (step 630). By way of example, the imageis sent with the data blocks of the application rearranged as described.In doing so, the data blocks are stored on the server 200 in a datamemory already in the order which is at least in some areas based on anexpected required order, as enabled by step 530. In doing so, the datablocks are also preferably sent in stored order.

FIG. 7 shows a flow diagram 7 of an exemplary embodiment of a methodaccording to the first aspect. The method can, by way of example, ineach case be carried out by the computer 250. By way of example, a user260 of a computer 250 wishes to execute the application. To this end,the corresponding computer 250 can, by way of example, send a requestvia the Internet 240 to the server 200.

On the corresponding computer 250, a block device driver for a virtualblock device is already installed. In this way, a virtual block devicecan be mounted in the file system of the operating system of thecomputer 250. The installation of a block device driver (for instance,driver 421) and the mounting of a virtual device have already beenexplained in more detail in connection with FIGS. 3 and 4 and this cantake place in the same way here. If it has not yet taken place, thecomputer 250 can receive metadata information for execution of theapplication associated with the application (step 710) sent, forinstance, according to step 620. Computer 250 similarly also receiveswith the metadata information (or separately from this) the storedmapping information, allowing a mapping of the original image to therearranged image (step 711).

Computer 250 preferably also receives information (for instance, thesize) on a storage space required for the data parts.

With the help of this information (for instance, path information andfile information) a mounting of an image with the necessary size cantake place and the application can (by way of example, by means of anexecutable file) be executed (step 720). This applies even if no datablock of the application has yet been stored locally in the data memoryof the corresponding computer 250, since information is alreadyavailable via an executable file.

The application now requires data blocks for its execution. These are,by way of example, requested by the file system (for instance, filesystem 431) from the block device driver (for instance, driver 421)(step 730).

In the event that the necessary data blocks are not available in thedata memory, processing of the device driver event queue is suspended(optional step 740). If the data blocks are already available, theprocess can continue from step 780 (see below). However, if a suspensionoccurs, data blocks necessary for the execution of the application canfirst be received from server 200 (step 750).

The data blocks are stored directly in the local data memory (forinstance, a hard disc) of the corresponding computer 250 in an orderwhich is at least in some areas based on an expected required order(step 760), since these are transferred in this way from server 200 dueto the rearranged image.

If the data blocks are available locally, the processing of the eventqueue of the device driver can be resumed (optional step 770).

Since the requested data blocks have been changed due to the change inblock order of the data blocks in the image received, the device drivermaps the addressing used to request the data blocks required forexecuting the application to the order of the data blocks stored in thedata memory (step 780). This is possible since mapping informationpreviously stored by server 200, allowing a mapping of the originalimage to the rearranged image, has been transferred to the computer 250.

Thus, the data blocks required for execution of the application can beprovided from the data memory of the computer 250 by the block devicedriver. Because the data blocks are already stored in the data memory inthe order which is at least in some areas based on an expected requiredorder (step 790), the provision can take place extremely efficiently. Inparticular, the starting of the application can in this way beaccelerated independently of whether application has still to bedownloaded from server 200 or is already stored on computer 250.

All references, including publications, patent applications, and patentscited herein are hereby incorporated by reference to the same extent asif each reference were individually and specifically indicated to beincorporated by reference and were set forth in its entirety herein.

The use of the terms “a” and “an” and “the” and similar referents in thecontext of describing the invention (especially in the context of thefollowing claims) is to be construed to cover both the singular and theplural, unless otherwise indicated herein or clearly contradicted bycontext. The terms “comprising,” “having,” “including,” and “containing”are to be construed as open-ended terms (i.e., meaning “including, butnot limited to,”) unless otherwise noted. Recitation of ranges of valuesherein are merely intended to serve as a shorthand method of referringindividually to each separate value falling within the range, unlessotherwise indicated herein, and each separate value is incorporated intothe specification as if it were individually recited herein. All methodsdescribed herein can be performed in any suitable order unless otherwiseindicated herein or otherwise clearly contradicted by context. The useof any and all examples, or exemplary language (e.g., “such as”)provided herein, is intended merely to better illuminate the inventionand does not pose a limitation on the scope of the invention unlessotherwise claimed. No language in the specification should be construedas indicating any non-claimed element as essential to the practice ofthe invention.

Preferred embodiments of this invention are described herein, includingthe best mode known to the inventors for carrying out the invention.Variations of those preferred embodiments may become apparent to thoseof ordinary skill in the art upon reading the foregoing description. Theinventors expect skilled artisans to employ such variations asappropriate, and the inventors intend for the invention to be practicedotherwise than as specifically described herein. Accordingly, thisinvention includes all modifications and equivalents of the subjectmatter recited in the claims appended hereto as permitted by applicablelaw. Moreover, any combination of the above-described elements in allpossible variations thereof is encompassed by the invention unlessotherwise indicated herein or otherwise clearly contradicted by context.

1. A method for executing an application which is performed by at leastone device, said method comprising: providing data parts from a datamemory, which are required for the execution of the application, thedata parts being stored in the data memory in a physical order which isat least in some areas based on an expected required chronologicalorder, and wherein the expected required chronological order is based atleast on a required chronological order acquired during the execution ofthe application.
 2. The method according to claim 1, wherein the methodfurther comprises: requesting of the data parts required for executionof the application.
 3. The method according to claim 2, wherein themethod further comprises: mapping an addressing used for the requestingof the data parts required for execution of the application to the orderof the data parts stored in the data memory.
 4. The method according toclaim 3, wherein the mapping of the addressing used takes place belowthe file system layer.
 5. The method according to claim 1, wherein themethod further comprises: receiving the data parts required forexecution of the application.
 6. The method according to claim 1,wherein the method further comprises: storing the data parts in a datamemory in the order which is at least in some areas based on an expectedrequired order.
 7. The method according to claim 1, wherein the dataparts are data blocks and/or sequences of data blocks and wherein theorder is a block order.
 8. The method according to claim 1, wherein thedata parts are stored in a block device, in particular a virtual blockdevice.
 9. The method according to claim 1, wherein for the providing ofthe data parts required for execution of the application from the datamemory a device driver, preferably a block device driver, is used. 10.The method according to claim 1, wherein the method further comprises:suspending a processing of an event queue, in particular if the requireddata parts are not available in the data memory; and resumption of theprocessing of the event queue.
 11. The method according to claim 1,wherein the data parts at least with respect to data parts relevant forthe application start are stored in the data memory in an order which isat least in some areas based on an expected required order.
 12. Themethod according to claim 1, wherein the method further comprises: usingmetadata information associated with the application to execute theapplication.
 13. A method for sending data parts, in particular for usein a method according to claim 1, carried out by at least one device,the method comprising: sending of data parts required for an executionof an application, wherein the data parts are stored in a data memory ina physical order which is at least in some areas based on an expectedrequired chronological order, wherein the expected requiredchronological order is based at least on a required chronological orderacquired during the execution of the application.
 14. The methodaccording to claim 13, wherein the data parts are sent at least partlyin the stored order.
 15. The method according to claim 13, wherein themethod further comprises: receiving a request to send at least some ofthe data parts required for execution of the application.
 16. The methodaccording to claim 13, wherein the method further comprises: sending ofmetadata information associated with the application for execution ofthe application.
 17. A method for storing data parts, carried out by atleast one device, said method comprising: receiving an acquired requiredchronological order of the data parts required for executing anapplication, wherein the acquired required chronological order of thedata parts required for execution of the application comprises loggedinformation on read operations on the required data parts during theexecution of the application; determining an expected requiredchronological order at least based on the acquired requiredchronological order; and storing the required data parts in a datamemory in a physical order which is at least in some areas based on theexpected required chronological order.
 18. The method according to claim17, wherein the method further comprises one or more of the followingsteps: installing a device driver, preferably a block device driver;generating an image; mounting a device via a device driver, inparticular via the installed device driver; installing the application,in particular on the image generated; determining metadata informationassociated with the application for the execution of the application;executing the application; acquiring the required order of the dataparts required for the execution of an application.
 19. The methodaccording to claim 17, wherein the logged information allows anunambiguous identification of the respective required data part.
 20. Themethod according to claim 17, wherein the logged information alsocomprises one or more of the following information: time information;application-specific events; user-specific information.
 21. The methodaccording to claim 17, wherein multiple acquired required orders of thedata parts required for execution of an application are received, andwherein the expected required order is determined at least based on themultiple acquired required orders.
 22. The method according to claim 17,wherein in the event of a sequential section of an acquired requiredorder the sequential section is condensed.
 23. A device configured to,or comprising, suitable means for, carrying out and/or controlling amethod according to claim
 1. 24. A computer program, comprising programinstructions, allowing a processor to carry out and/or control a methodaccording to claim 1 if the computer program runs on the processor.